아래는 HTML5의 Video 태그의 사용 방법과 예제 등 다양한 내용을 정리하였습니다.
# Video 태그는?
미디어 파일인 비디오나 오디오 등을 재생하기 위해서 HTML5부터 새롭게 추가된 API가 바로 Video 그리고 Audio입니다. 이 둘은 실제로 거의 비슷한 메소드와, 프로퍼티를 가지고 있습니다. 여기서는 Video 태그에 대하여 알아봅니다.
! Video 태그의 특징은?
video 태그는 다양한 포맷을 지원하며 비디오 영상을 쉽고 간단하게 재생할 수 있습니다. video 태그를 사용해 다양한 브라우저 및 환경에서 재생 가능합니다.
Video 태그를 사용하는 방법은 간단합니다. 아래와 같이 적용합니다. 만약 a.mp4라는 파일을 재생한다면 아래와 같이 두 가지 방법을 사용합니다.
<video src="a.mp4"></video>
<video>
<source src="a.mp4"></source>
</video>
위에 코드처럼 src 프로퍼티를 사용하는 방법과 내부의 <source>태그를 사용할 수 있습니다. 두 가지 방법 모두 많이 사용되는 방법입니다.
! video 태그 자동 재생 방법
video 태그에
autoplay 속성을 사용하여 자동재생이 가능합니다. 즉 방문자가 웹페이지에 접속하면 자동으로 영상이 재생되게 됩니다.
<video autoplay src="a.mp4"></video>
이 방법은 일반적인 경우에는 자주 사용되지 않지만 웹페이지의 백그라운드 배경에서 영상 재생시 주로 사용됩니다. 다만 모바일 환경에서 자동 재생이 안될 수 있습니다. 관련 내용은 하단의 모바일 자동 재생에서 참고하세요.
! video 태그 속성 및 메소드 와 프로퍼티
video 태그에서 사용되는 자주 사용되는 메소드와 프로퍼티는 다음과 같습니다.
@ video 태그 속성
src // 파일 소스의 정보 추가하기
controls // 시작, 정지 등등 컨트롤러 사용하기
loop // 반복 재생 설정하기
muted // 음소거 사용 설정하기
autoplay // 자동재생 설정하기
playsinline // 아이폰 인라인 재생 허용하기
[ playsinline ]
iOS, 아이폰의 경우 영상 재생이 자동으로 풀스크린 화면이 나타나게 됩니다. 이때 이 옵션을 사용해 자동 풀스크린을 제거하고 인라인 플레이가 가능하게 설정할 수 있습니다.
! 메소드 정보
아래는 video 태그 메소드 정보입니다.
play() // 영상 재생하기
pause() // 영상 멈춤, 정지
! 프로퍼티 정보
아래는 vidoe 태그 프로퍼티 정보입니다.
# 이슈사항과 해결방안
아래는 Video 태그를 적용하면서 나타날 수 있는 다양한 정보들입니다.
! video 태그의 소스 src를 다이나믹하게 바꾸는 방법
만약 video 태그의 소스를 a에서 b로 바꾸는 경우 실제 웹에서 재생되지 않거나 에러가 나타날 수 있습니다. 이 경우 어떻게 해결할 수 있을까요?
이슈상황을 확인하기 위해서 코드를 재현해보고자 합니다. 먼저 아래와 같은 video 태그가 있습니다.
<video id="testVideo" src="a.mp4"></video>
이제 a.mp4 영상을 자바스크립트에서 b.mp4로 바꾸어보려고합니다. 아래와 같이 코드를 작성하고 실행해봅니다.
let _video = document.querySelector('#testVideo');
_video.src = 'b.mp4';
_video.play(); // 에러가 발생할 수 있음
브라우저의 소스 보기를 사용하면 b.mp4로 바뀐 모습이 나타납니다. 하지만 실제 재생해보면 에러가 발생할 수 있습니다. 이 때 어떻게 해결할 수 있을까요? 가장 중요한 부분은
load() 메소드를 사용하여 비디오 정보를 다시 로드하는 것입니다. 이제 아래처럼 load()를 추가해 다시 작성해보겠습니다.
let _video = document.querySelector('#testVideo');
_video.removeAttribute('src'); // src 프로퍼티를 제거
_video.src = 'b.mp4'; // 다른 미디어로 소스 변경
_video.load(); // 새로운 정보를 다시 로드
_video.play(); // 잘 동작함
이와 같이 해결되었습니다.
! 모바일에서 자동재생이 안되는 문제
모바일에서는 autoplay를 사용해도 자동재생이 되지 않습니다. 그 이유는 모바일 브라우저의 정책에 따라 자동재생이 막혀있기 때문으로 자동재생을 하려면 무음으로 실행해야 합니다. 즉 muted를 동시에 사용해야만 자동재생이 가능합니다. 아래의 코드처럼 사용합니다.
<video src="a.mp4"
autoplay
muted></video>
이제 모바일 환경에서 확인하면 자동재생되는 것을 알 수 있습니다.
# 기타 팁과 정보
예전에는 비디오와 같은 미디어 재생을 위해서 iframe이나 embeded 태그를 사용하였습니다. 하지만 HTML5 이후부터는 video 태그를 사용하는데 편리한 메소드와 프로퍼티를 많이 가지고 있어 이벤트 등의 제어등에 매우 간단하여 코드도 간결해졌습니다.